import os
import random
import time

import requests
from bs4 import BeautifulSoup
from selenium.webdriver import Firefox
from selenium.webdriver.firefox.options import Options

'''
asmr mp3下载
'''
user_agent = [
    "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50",
    "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50",
    "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0",
    "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; InfoPath.3; rv:11.0) like Gecko",
    "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)",
    "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)",
    "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)",
    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)",
    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1",
    "Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1",
    "Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; en) Presto/2.8.131 Version/11.11",
    "Opera/9.80 (Windows NT 6.1; U; en) Presto/2.8.131 Version/11.11",
    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11",
    "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon 2.0)",
    "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; TencentTraveler 4.0)",
    "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)",
    "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; The World)",
    "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SE 2.X MetaSr 1.0; SE 2.X MetaSr 1.0; .NET CLR 2.0.50727; SE 2.X MetaSr 1.0)",
    "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 360SE)",
    "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Avant Browser)",
    "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)",
    "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5",
    "Mozilla/5.0 (iPod; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5",
    "Mozilla/5.0 (iPad; U; CPU OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5",
    "Mozilla/5.0 (Linux; U; Android 2.3.7; en-us; Nexus One Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",
    "MQQBrowser/26 Mozilla/5.0 (Linux; U; Android 2.3.7; zh-cn; MB200 Build/GRJ22; CyanogenMod-7) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",
    "Opera/9.80 (Android 2.3.4; Linux; Opera Mobi/build-1107180945; U; en-GB) Presto/2.8.149 Version/11.10",
    "Mozilla/5.0 (Linux; U; Android 3.0; en-us; Xoom Build/HRI39) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13",
    "Mozilla/5.0 (BlackBerry; U; BlackBerry 9800; en) AppleWebKit/534.1+ (KHTML, like Gecko) Version/6.0.0.337 Mobile Safari/534.1+",
    "Mozilla/5.0 (hp-tablet; Linux; hpwOS/3.0.0; U; en-US) AppleWebKit/534.6 (KHTML, like Gecko) wOSBrowser/233.70 Safari/534.6 TouchPad/1.0",
    "Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 NokiaN97-1/20.0.019; Profile/MIDP-2.1 Configuration/CLDC-1.1) AppleWebKit/525 (KHTML, like Gecko) BrowserNG/7.1.18124",
    "Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Titan)",
    "UCWEB7.0.2.37/28/999",
    "NOKIA5700/ UCWEB7.0.2.37/28/999",
    "Openwave/ UCWEB7.0.2.37/28/999",
    "Mozilla/4.0 (compatible; MSIE 6.0; ) Opera/UCWEB7.0.2.37/28/999",
    # iPhone 6：
    "Mozilla/6.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/8.0 Mobile/10A5376e Safari/8536.25",

]

hd = {'User-Agent': random.choice(user_agent)}


# hd = {
#     'User-Agent': '	Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:87.0) Gecko/20100101 Firefox/87.0',
#     'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
#     'Accept-Encoding': 'gzip, deflate, br',
#     'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
#     'Connection': 'keep-alive',
#     'Host': 'www.asmrin.com',
#     'Upgrade-Insecure-Requests': '1'}


# 访问网页获取网页信息
def geturlinfo(url):
    try:
        r = requests.get(url, timeout=30, headers=hd)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return ''


# 参数为第一页地址
# http://ibuk.org/category/asmr在线音频/page/2/
def download_mp3(url, dir_path):
    options = Options()
    options.add_argument('-headless')
    driver = Firefox(executable_path='D:\\其他软件\\firfox\\geckodriver', firefox_options=options)
    try:
        driver.get(url)
        time.sleep(1)
        text = driver.page_source
        soup = BeautifulSoup(text, "html.parser")
        table = soup.table  # 获取table
        tr_arr = table.find_all('tr')  # 获取table中所有的tr
        ii = 1
        mp3_name_arr = []
        mp3_url_arr = []
        for tr in tr_arr:
            td_arr = tr.find_all("td", class_="treeValueCell stringCell")
            if len(td_arr):
                if ii % 5 == 2:  # 该网站 5个tr表示一个音频 第2个为标题
                    mp3_name = td_arr[0].find('span', class_="objectBox objectBox-string").get_text() + '.mp3'
                    mp3_name = mp3_name.replace('"', '')
                    mp3_name_arr.append(mp3_name)
                    print(mp3_name)
                if ii % 5 == 4:  # 该网站 5个tr表示一个音频 第4个为路径
                    aa = td_arr[0].find('a', class_='url')
                    mp3_url = aa.attrs["href"]
                    mp3_url_arr.append(mp3_url)
                    print(mp3_url)
                ii += 1
        print('mp3_name_arr:' + str(len(mp3_name_arr)))
        for iii in range(len(mp3_name_arr)):  # 下载音频
            try:
                path = os.path.join(dir_path, mp3_name_arr[iii].replace('/', ''))
                print(path)
                reponse = requests.get(mp3_url_arr[iii])
                with open(path, "wb") as mp3:
                    mp3.write(reponse.content)
            except FileNotFoundError as ff:
                print(ff)
                continue
    except Exception as ee:
        print(ee)
    finally:
        driver.close()


# http://ibuk.org/wp-content/uploads/2019/08/小女巫露娜鹅毛棒清洁耳朵.mp3
# http://ibuk.org/wp-content/uploads/2019/06/沙子 豆子 风铃声 音疗.mp3

# http://ibuk.org/category/asmr在线音频/page/%s/
# https://www.asmrin.com/wp-admin/admin-ajax.php?action=hermit&scope=remote&id=2
# id最小2 最大32
if __name__ == "__main__":
    url = "https://www.asmrin.com/wp-admin/admin-ajax.php?action=hermit&scope=remote&id={}"
    print(url)
    dir_path = 'D:/asmrbypy/'  # 设置文件夹的名字
    if not os.path.exists(dir_path):
        os.makedirs(dir_path)
    for i in range(2, 33):
        try:
            url1 = url.format(i)
            print(url1)
            download_mp3(url1, dir_path)

        except Exception as e:
            print(e)
